/*================================================================================
* CopyRight(c)2008, www.k-zone.cn. All rights reserved.
* Code licensed under the BSD License
* Author: Kenshin, Email: fxblog@gmail.com, Blog: http://www.k-zone.cn/zblog/
* Version：v0.1
* Data：2008-2-1
*===============================================================================*/
package com.ken.fanfou.as3.statuses
{
	import com.ken.fanfou.as3.Common;
	import com.ken.fanfou.as3.FanFouEvent;
	import com.ken.fanfou.as3.FanFouMethod;
	
	import flash.events.Event;
	import flash.events.IOErrorEvent;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.net.URLVariables;

	public class Update extends FanFouMethod
	{
		public function Update(value:String){
			super();
			_url = value;
		}
		
		/** 
		* 重写FanFouMethod，使其具有详细方法，而方法是针对与Update.xml而写。
		* 发布消息
		* Common.STATUS为发送到饭否的消息内容。例如“你好，饭否！”等
		* Common.FANFOU_SOURCE的内容为“AIR-FanFou”
		* 
		* @param 饭否默认显示的xml条数、默认是20条（这个参数在本方法中无用）
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function Loader(count:int = 20):void{
			var request:URLRequest = new URLRequest(_url);
			var loader:URLLoader = new URLLoader();
			var urlV:URLVariables=new URLVariables();
            urlV.status = Common.STATUS;
            urlV.source = Common.FANFOU_SOURCE;
            request.data = urlV;
			loader.load(request);
			loader.addEventListener(IOErrorEvent.IO_ERROR,errorHandler);
			loader.addEventListener(Event.COMPLETE,completeHandler);
		}
		
		/** 
		* 私有方法，如果urlloader出错，则执行这个方法
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		private function errorHandler(event:IOErrorEvent):void{
			trace(111111)
		}

		/** 
		* 私有方法，如果读取正确出错，则执行这个方法。并且dispatchEvent一个事件，已被客户端监听。
		* 其中_xml是它的父类FanFouMethod的方法。 
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		private function completeHandler(event:Event):void{
			_xml = new XML(event.target.data);
			dispatchEvent(new FanFouEvent(FanFouEvent.COMPLETE));
		}
		
		/** 
		* 重写GetXml，将得到的内容→xml中
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function GetXml():XML{
			return _xml;
		}
		
		/**------------------------------------ update.xml的属性 ------------------------------------*/
		/** 
		* update返回的XML数组：status的长度
		* 
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		*/
		public override function get XmlLength():uint{
			return _xml.length();
		}

		/** 
		* update返回的XML数组：status中的内容
		* 包括：created_at、id、text、screen_name、id、name、location、description、profile_image_url、url、protected
		* 
		* @return Array
		* @langversion ActionScript 3.0
		* @playerversion Flash 9.0
		* 返回的XML、例如：
    	* <status>
    	*   <created_at>Sat Feb 02 08:01:44 +0000 2008</created_at>
    	*   <id>ii8T2Z-U1m0</id>
    	*   <text>测试！！！</text>
    	*   <user>
    	*     <screen_name>Kenshin</screen_name>
    	*     <id>Kenshin.L</id>
    	*     <name>Kenshin</name>
    	*     <location>辽宁 大连</location>
    	*     <description>关注Flex,AS3,AIR,Java,DotNet,Web Design,用户体验</description>
    	*     <profile_image_url>http://avatar.fanfou.com/s0/00/4m/h8.jpg?1193907005</profile_image_url>
    	*     <url>http://fanfou.com/Kenshin.L</url>
    	*     <protected>false</protected>
    	*   </user>
    	* </status>
		*/
		public override function get XmlContent():Array{
			_array.push({created_at:_xml.created_at,
 			             id:_xml.id,
 			             text:_xml.text,
 			             user_screen_name:_xml.user.screen_name,
 			             user_id:_xml.user.id,
 			             user_name:_xml.user.name,
 			             user_location:_xml.user.location,
 			             user_description:_xml.user.description,
 			             user_profile_image_url:_xml.user.profile_image_url,
 			             user_url:_xml.user.url
			            });
			return _array;
		}
	}
}